package OrdersSystem;

import java.util.ArrayList;

/**
 * Class that represents an existing user in the system.
 * 
 * @author iSolutions Orders Team
 *
 */
public abstract class RegisteredUser 
{
	/**
	 * Contains the number, which identifies uniquely the user.  
	 */
	private int userID;
	/**
	 * Contains the name of the user.  
	 */
	private String name;
	/**
	 * Contains the surname of the user.  
	 */
	private String surname;
	/**
	 * Contains the address of the user.  
	 */
	private ContactDetails address;
	
  // Constructor
	
	/**
	 * The Constructor of the class, used to initialize its variables
	 * 
	 * @param userID the number, which uniquely identifies a user
	 * @param name the first name of the user
	 * @param surname the second name of the user
	 * @param address the contact details of the user
	 * 
	 */ 
	public RegisteredUser(int userID, String name, String surname, ContactDetails address)
	{
		this.userID = userID;
		this.name = name;
		this.surname = surname;
		this.address = address;
	}
 
  // Accessors
	
  /**
   * Gets an attribute.
   * @return address.
   */
  public ContactDetails getAddress() 
  {
	return address;
  }
	
  /**
   * Gets an attribute.
   * @return userID.
   */
  public int getUserID() 
  {
	return userID;
  }
  
  /**
   * Gets an attribute.
   * @return name.
   */
  public String getName()
  {
	  return name;
  }
  
  /**
   * Gets an attribute.
   * @return surname.
   */
  public String getSurname() {
	return surname;
  }
 
  // Methods
  /**
   * Abstract method for retrieving the history of the Orders.
   * @return ArrayList<Order>.
   */
  public abstract ArrayList<Order> viewHistoryTracking();
  
}
